home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus Extra 1996 #2
/
Amiga Plus CD - 1996 - No. 2 Extra.iso
/
clarissa1_1-demo
/
macros
/
colorc.clssa
< prev
next >
Wrap
Text File
|
1995-01-26
|
4KB
|
175 lines
/***********************************************************************
GADGET: "'ColorCycle'" "6" AUTO TYP: "?"
$DAT >>ColorC.clssa<< 05.10.1992 - (C) ProDAD Holger Burkarth
20.01.1995 - (C) ProDAD Michael Christoph
************************************************************************/
Options Results
Address clariSSA
FailAt 10
AltFail=RESULT
GetArea
PARSE VAR RESULT . "FROM" von "TO" bis .
von=Strip(von)
Anzahl=bis-von
IF Anzahl>1 THEN DO
DO FOREVER
MSRequester "TITLE '*** ColorCycle ***'",
"''",
"'Wählen Sie die Effektart aus.'",
"PTEXT 'Zyklische Farbrotation'",
"'Gespiegelte Farbrotation (Kontrast)'",
"'Gespiegelte Farbrotation '"
IF RC~=0 THEN LEAVE
Art=RESULT
COLRequest "FROM 0 TO 1 TITLE '*** ColorCycle ***''''Farbbereich bestimmen.'"
IF RC~=0 THEN LEAVE
ListeG=RESULT
RevListe=ListeG
PARSE VAR ListeG SFarbe ListeG
EFarbe=SFarbe
DO UNTIL ListeG=""
PARSE VAR ListeG EFarbe ListeG
END
IF EFarbe="" THEN EFarbe=0
IF SFarbe = EFarbe THEN DO
Message "'Der Farbbereich muß sich''über min. 2 Farben erstrecken.'"
LEAVE
END
INTRequest "'*** ColorCycle ***''''Anzahl der zu erzeugenden'",
"'Farbrotationen im Animationsbereich.'",
"'(1 Zyklus == "EFarbe-SFarbe")'"Anzahl
IF RC~=0 THEN LEAVE
Rot=RESULT
IF Rot<1 THEN DO
Message "'Eingegebener Wert ist''nicht zulässig!'"
LEAVE
END
IF Art=2 THEN DO
RevListe=RollRevListe(TRUNC((EFarbe+SFarbe)/2),SFarbe,EFarbe)
END
ELSE IF Art=3 THEN DO
RevListe=RollRevListe2(SFarbe,EFarbe)
END
BOOLRequest "'Animationsfarben ändern?''Anim: Master''<< von "von" bis "bis" >>'"
IF RC~=0 | RESULT="NO" THEN LEAVE
RequestStatus OFF
ViewFrame COPS von
GetColor RevListe
ListeC=RESULT
Pos=1
M=0
DO UNTIL von>bis
n=TRUNC(Pos*Rot/Anzahl+0.5)
ListeG=RollListe(n,SFarbe,EFarbe)
Liste=""
DO UNTIL ListeC=""
PARSE VAR ListeG n ListeG
PARSE VAR ListeC x r g b ListeC
Liste=Liste n r g b
END
SetColor Liste
Record COPS
IF RC~=0 THEN LEAVE
von=von+1
Pos=Pos+1
ViewFrame COPS von
IF RC~=0 THEN LEAVE
GetColor RevListe
ListeC=RESULT
END
RequestStatus ON
LEAVE
END
END
ELSE Message "'Für einen ColorCycle müssen''min. 2 Frames ausgewählt werden.'"
FailAt AltFail
exit
RollListe: procedure
DO
ARG n,Start,Ende
x=Start+n
n=Start
Liste=""
DO UNTIL n>Ende
x=((x-Start+1) // (Ende-Start+1)) + Start
Liste=Liste x
n=n+1
END
RETURN (Liste)
END
RollRevListe: procedure
DO
ARG n,Start,Ende
Liste=""
l=Start - n
x=Start
ad=1
DO UNTIL x > Ende
f=Start+l
IF f > Ende THEN f=(f-Start) - (Ende-Start) + Start
IF f < Start THEN f=(Ende-Start) + (f-Start) + Start + 1
Liste=Liste f
if l=0 THEN ad=-1
l=l+ad
x=x+1
END
RETURN (Liste)
END
RollRevListe2: procedure
DO
ARG Start,Ende
Liste=""
n=Ende-Start+1
l=Start
DO UNTIL l > Ende
Liste=Liste l
l=l+2
n=n-1
END
IF l-2 = Ende THEN l=l-3
ELSE l=l-1
DO UNTIL n<=0
Liste=Liste l
l=l-2
n=n-1
END
RETURN (Liste)
END